home *** CD-ROM | disk | FTP | other *** search
/ Sprite 1984 - 1993 / Sprite 1984 - 1993.iso / src / lib / c / etc / RCS / shmop.man,v < prev    next >
Text File  |  1990-06-27  |  4KB  |  200 lines

  1. head     1.2;
  2. branch   ;
  3. access   ;
  4. symbols  ;
  5. locks    ; strict;
  6. comment  @@;
  7.  
  8.  
  9. 1.2
  10. date     90.06.27.11.18.25;  author shirriff;  state Exp;
  11. branches ;
  12. next     1.1;
  13.  
  14. 1.1
  15. date     90.04.03.11.56.48;  author shirriff;  state Exp;
  16. branches ;
  17. next     ;
  18.  
  19.  
  20. desc
  21. @Man page for shmop.
  22. @
  23.  
  24.  
  25. 1.2
  26. log
  27. @Added BUGS section.
  28. @
  29. text
  30. @.\" @@(#)shmop.2 1.20 88/03/01 SMI; from S5R3
  31. .TH SHMOP 2 "21 November 1987"
  32. .SH NAME
  33. shmop, shmat, shmdt \- shared memory operations
  34. .SH SYNOPSIS
  35. .nf
  36. .ft B
  37. #include <sys/types.h>
  38. #include <sys/ipc.h>
  39. #include <sys/shm.h>
  40. .LP
  41. .ft B
  42. char \(**shmat(shmid, shmaddr, shmflg)
  43. int shmid;
  44. char \(**shmaddr;
  45. int shmflg;
  46. .LP
  47. .ft B
  48. int shmdt(shmaddr)
  49. char \(**shmaddr;
  50. .fi
  51. .ft R
  52. .SH DESCRIPTION
  53. .IX  shmop  ""  "\fLshmop\fR \(em get shared memory operations"
  54. .IX  "shared memory" "operation \(em\fLshmop\fR"
  55. .B shmat(\|)
  56. maps the shared memory segment associated with the shared memory identifier
  57. specified by
  58. .I shmid
  59. into the data segment of the calling process.  Upon successful completion,
  60. the address of the mapped segment is returned.
  61. .LP
  62. The shared memory segment is mapped at the address specified
  63. by one of the following criteria:
  64. .TP
  65. \(bu
  66. If
  67. .I shmaddr
  68. is equal to zero, the segment is mapped at an address selected by the
  69. system.  Ordinarily, applications should invoke
  70. .B shmat(\|)
  71. with
  72. .I shmaddr
  73. equal to zero so that the operating system may make the best
  74. use of available resources.
  75. .TP
  76. \(bu
  77. If
  78. .I shmaddr
  79. is not equal to zero and
  80. .RI ( shmflg " &"
  81. .SM
  82. .BR SHM_RND \s0)
  83. is ``true'', the segment is mapped at the address given by
  84. .RI ( shmaddr " -"
  85. .RI ( shmaddr " modulus"
  86. .SM
  87. .BR SHMLBA \s0)).
  88. .TP
  89. \(bu
  90. If
  91. .I shmaddr
  92. is not equal to zero and
  93. .RI ( shmflg " &"
  94. .SM
  95. .BR SHM_RND \s0)
  96. is ``false'', the segment is mapped at the address given by
  97. .IR shmaddr .
  98. .LP
  99. The segment is mapped for reading if
  100. .RI ( shmflg " &"
  101. .SM
  102. .BR SHM_RDONLY \s0)
  103. is ``true''
  104. .BR \%{\s-1READ\s0} ,
  105. otherwise it is mapped for reading and writing
  106. .BR \%{\s-1READ\s0/\s-1WRITE\s0} .
  107. .LP
  108. .B shmdt(\|)
  109. unmaps from the calling process's address space
  110. the shared memory segment that is mapped at the address specified by
  111. .IR shmaddr .
  112. The shared memory segment must have been mapped with a prior
  113. .B shmat(\|)
  114. function call.  The segment and contents are retained until explicitly
  115. removed by means of the
  116. .SB IPC_RMID
  117. function (see
  118. .BR shmctl (2)).
  119. .SH RETURN VALUES
  120. Upon successful completion, the return values are as follows:
  121. .TP
  122. \(bu
  123. .B shmat(\|)
  124. returns the data segment start address of the mapped shared memory segment.
  125. .TP
  126. \(bu
  127. .B shmdt(\|)
  128. returns a value of 0.
  129. .LP
  130. Otherwise, a value of \-1 is returned and
  131. .B errno
  132. is set to indicate the error.
  133. .SH ERRORS
  134. .B shmat(\|)
  135. will fail and not map the shared memory segment if one or more of the
  136. following are true:
  137. .TP 20
  138. .SM EINVAL
  139. .I shmid
  140. is not a valid shared memory identifier.
  141. .TP
  142. .SM EACCES
  143. Operation permission is denied to the calling process (see
  144. .BR intro (2)).
  145. .TP
  146. .SM ENOMEM
  147. The available data space
  148. is not large enough to accommodate the shared memory segment.
  149. .TP
  150. .SM EINVAL
  151. .I shmaddr
  152. is not equal to zero, and the value of
  153. .RI ( shmaddr " -"
  154. .RI ( shmaddr " modulus"
  155. .SM
  156. .BR SHMLBA \s0))
  157. is an illegal address.
  158. .TP
  159. .SM EINVAL
  160. .I shmaddr
  161. is not equal to zero,
  162. .RI ( shmflg " &"
  163. .SM
  164. .BR SHM_RND \s0)
  165. is ``false'', and the value of
  166. .I shmaddr
  167. is an illegal address.
  168. .TP
  169. .SM EMFILE
  170. The number of shared memory segments mapped to the calling process would
  171. exceed the system-imposed limit.
  172. .LP
  173. .B shmdt(\|)
  174. will fail and not unmap the shared memory segment if:
  175. .TP
  176. .SM EINVAL
  177. .I shmaddr
  178. is not the data segment start address of a shared memory segment.
  179. .SH SEE ALSO
  180. .BR execve (2),
  181. .BR exit (2),
  182. .BR fork (2),
  183. .BR intro (2),
  184. .BR shmctl (2),
  185. .BR shmget (2)
  186. .SH BUGS
  187. The System V shared memory functions are implemented at user level on top
  188. of the mmap(2) interface.  Not all the System V functionality is
  189. implemented.
  190. @
  191.  
  192.  
  193. 1.1
  194. log
  195. @Initial revision
  196. @
  197. text
  198. @d157 4
  199. @
  200.